import java.util.Random;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 刘国水
 * Date: 2025-07-23
 * Time: 16:39
 */
public class Test {
    private static class MyRunnable implements Runnable {
        public volatile boolean isQuit = false;
        @Override
        public void run() {
            while (!isQuit) {
                System.out.println(Thread.currentThread().getName()
                        + ": 别管我，我忙着转账呢!");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println(Thread.currentThread().getName()
                    + ": 啊！险些误了⼤事");
        }
    }
    public static void main(String[] args) throws InterruptedException {
        MyRunnable target = new MyRunnable();
        Thread thread = new Thread(target, "李四");
        System.out.println(Thread.currentThread().getName()
                + ": 让李四开始转账。");
        thread.start();

        Thread.sleep(10 * 1000);
        System.out.println(Thread.currentThread().getName()
                + ": ⽼板来电话了，得赶紧通知李四对⽅是个骗⼦！");
        target.isQuit = true;
    }
//    public static void main(String[] args) {
//        Thread thread = new Thread(() -> {
//            for (int i = 0; i < 10; i++) {
//                try {
//                    System.out.println(Thread.currentThread().getName() + ": 我 还活着");
//                            Thread.sleep(1 * 1000);
//                } catch (InterruptedException e) {
//                    e.printStackTrace();
//                }
//            }
//            System.out.println(Thread.currentThread().getName() + ": 我即将死 去");
//        });
//        System.out.println(Thread.currentThread().getName()
//                + ": ID: " + thread.getId());
//        System.out.println(Thread.currentThread().getName()
//                + ": 名称: " + thread.getName());
//        System.out.println(Thread.currentThread().getName()
//
//                        + ": 状态: " + thread.getState());
//        System.out.println(Thread.currentThread().getName()
//                + ": 优先级: " + thread.getPriority());
//        System.out.println(Thread.currentThread().getName()
//                + ": 后台线程: " + thread.isDaemon());
//        System.out.println(Thread.currentThread().getName()
//                + ": 活着: " + thread.isAlive());
//        System.out.println(Thread.currentThread().getName()
//                + ": 被中断: " + thread.isInterrupted());
//        thread.start();
//        while (thread.isAlive()) {}
//        System.out.println(Thread.currentThread().getName()
//                + ": 状态: " + thread.getState());
//    }

//    Thread t1 = new Thread();
//    Thread t2 = new Thread(new MyRunnable());
//    Thread t3 = new Thread("这是我的名字");
//    Thread t4 = new Thread(new MyRunnable(), "这是我的名字");
    // 多线程并不⼀定就能提⾼速度，可以观察，count 不同，实际的运⾏效果也是不同的
//    private static final long count = 10_0000_0000;
//
//    public static void main(String[] args) throws InterruptedException {
//        // 使⽤并发⽅式
//        concurrency();
//        // 使⽤串⾏⽅式
//        serial();
//    }
//    private static void concurrency() throws InterruptedException {
//        long begin = System.nanoTime();
//
//        // 利⽤⼀个线程计算 a 的值
//        Thread thread = new Thread(new Runnable() {
//
//            @Override
//            public void run() {
//                int a = 0;
//                for (long i = 0; i < count; i++) {
//                    a--;
//                }
//            }
//        });
//
//        thread.start();
//        // 主线程内计算 b 的值
//        int b = 0;
//        for (long i = 0; i < count; i++) {
//            b--;
//        }
//        // 等待 thread 线程运⾏结束
//        thread.join();
//
//        // 统计耗时
//        long end = System.nanoTime();
//        double ms = (end - begin) * 1.0 / 1000 / 1000;
//        System.out.printf("并发: %f 毫秒%n", ms);
//    }
//    private static void serial() {
//        // 全部在主线程内计算 a、b 的值
//        long begin = System.nanoTime();
//        int a = 0;
//        for (long i = 0; i < count; i++) {
//            a--;
//        }
//        int b = 0;
//        for (long i = 0; i < count; i++) {
//            b--;
//        }
//        long end = System.nanoTime();
//        double ms = (end - begin) * 1.0 / 1000 / 1000;
//        System.out.printf("串⾏: %f 毫秒%n", ms);
//    }

//    public static void main(String[] args) {
//        Thread t1 = new Thread(() -> {
//            System.out.println("使⽤匿名类创建 Thread ⼦类对象");
//        });
//        t1.start();
//        System.out.println("主线程");
//    }

//     private static class MyRunnable implements Runnable {
//        @Override
//        public void run() {
//            System.out.println("这⾥是线程运⾏的代码");
//        }
//
//    }

//    public static void main(String[] args) {
//        Thread t1 = new Thread() {
//            @Override
//            public void run() {
//                System.out.println("使⽤匿名类创建 Thread ⼦类对象");
//            }
//        };
//
////        Thread t = new Thread(new MyRunnable());
//        t1.start();
//        System.out.println("主线程");
//    }

//       class MyRunnable extends Random {
//
//        public void run() {
//            System.out.println("这⾥是线程运⾏的代码");
//        }
//    }
//
//    public static void main(String[] args) {
//        Thread t = new Thread(new Runnable() {
//            @Override
//            public void run() {
//                System.out.println("这⾥是线程运⾏的代码");
//            }
//        });
//
//        t.start();
//        System.out.println("z");
//    }
//    private static class MyThread extends Thread {
//        @Override
//        public void run() {
//            Random random = new Random();
//            while (true) {
//                // 打印线程名称
//                System.out.println(Thread.currentThread().getName());
//                try {
//                    // 随机停⽌运⾏ 0-9 秒
//                    Thread.sleep(random.nextInt(10));
//                } catch (InterruptedException e) {
//                    e.printStackTrace();
//                }
//            }
//        }
//    }
//    public static void main(String[] args) {
//        MyThread t1 = new MyThread();
//        t1.start();
//        Random random = new Random();
//        while (true) {
//            // 打印线程名称
//            System.out.println(Thread.currentThread().getName());
//            try {
//                Thread.sleep(random.nextInt(10));
//            } catch (InterruptedException e) {
//                // 随机停⽌运⾏ 0-9 秒
//                e.printStackTrace();
//            }
//        }
//    }
//    class MyThread extends Thread {
//        @Override
//        public void run() {
//            System.out.println("这⾥是线程运⾏的代码");
//        }
//    }
//    private static class MyThread extends Thread {
//        @Override
//        public void run() {
//            System.out.println("这⾥是线程运⾏的代码");
//        }
//    }
//
//    public static void main(String[] args) {
//        MyThread t = new MyThread();
//        t.start();
//        System.out.println("主线程");
//    }

//    public void main(String[] args) {
//        MyThread t = new MyThread();
//        t.start();
//        System.out.println("诛仙");
//    }
}
